﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using crm.model;
using System.Data;
using VP.Tools;

namespace crm.aplicacao.CRMSystem
{
    public partial class GUsuarios : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
                carregarUsuarios();

        }
        /// <summary>
        /// /// var senha = Encryption.Encrypt(txtSenha.Text, "root", 2); // encript
        /// </summary>
        [DirectMethod]
        public void inserir()
        {
            if (txtNomeUsuarios.Text == "" || txtEmailUsuarios.Text == "")
                X.Msg.Alert("Status", "Os campos deverão ser preenchidos!").Show();
            else
            {
                Usuario obj = new Usuario();
                obj.Nome = txtNomeUsuarios.Text;
                obj.Email = txtEmailUsuarios.Text;
                obj.Senha =  Encryption.Encrypt(txtSenhaUsuarios.Text, "root", 2);


                UsuarioDao objDao = new UsuarioDao();

                var objValida = objDao.consultar(txtEmailUsuarios.Text);

                if (hdfIdUsuarios.Value.Equals(""))
                    if (objValida.Rows.Count > 0)
                        X.Msg.Alert("Status", "Este Login já está cadastrado!").Show();
                    else
                        if (objDao.inserir(obj))
                            X.Msg.Alert("Status", "Inserido com sucesso!").Show();
                        else
                            X.Msg.Alert("Status", "Não foi possível inserir!").Show();
                else
                {
                    var id = Convert.ToInt32(hdfIdUsuarios.Value);

                    hdfIdUsuarios.Clear();

                    obj = new Usuario() { IdUsuario = id };

                    obj.Nome = txtNomeUsuarios.Text;
                    obj.Email = txtEmailUsuarios.Text;
                    obj.Senha = Encryption.Encrypt(txtSenhaUsuarios.Text, "root", 2); 

                    if (new UsuarioDao().atualizar(obj))
                        X.Msg.Alert("Status", "Atualizado com sucesso!").Show();
                    else
                        X.Msg.Alert("Status", "Não foi possível atualizar!").Show();
                }

                win.Hide();
                carregarUsuarios();
            }
        }

        [DirectMethod]
        public void editar()
        {
            RowSelectionModel sm = GridUsuarios.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = -1 * Convert.ToInt32(sm.SelectedRow.RecordID);

            var dt = new UsuarioDao().consultar(id);

            List<Usuario> lst = new List<Usuario>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Usuario()
                {
                    IdUsuario = (int)dr["idusuarios"],
                    Nome = (string)dr["nome"],
                    Email = (string)dr["email"],
                    Senha = (string)dr["senha"]
                });
            }

            if (lst.Count == 0)
                return;

            var obj = lst[0];

            hdfIdUsuarios.Value = id.ToString();
            txtNomeUsuarios.Text = obj.Nome;
            txtEmailUsuarios.Text = obj.Email;
            txtSenhaUsuarios.Text = obj.Senha;

            win.Show();
        }

        [DirectMethod]
        public void remover()
        {
            RowSelectionModel sm = GridUsuarios.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            var id = -1 * Convert.ToInt32(sm.SelectedRow.RecordID);

            new UsuarioDao().remover(id);

            if (id > 0)
                X.Msg.Alert("Status", "Removido com sucesso!").Show();
            else
                X.Msg.Alert("Status", "Não foi possível remover!").Show();

            carregarUsuarios();

        }

        void carregarUsuarios()
        {
            UsuarioDao objDao = new UsuarioDao();
            var dados = objDao.consultar();
            this.strUsuarios.DataSource = dados;
            this.strUsuarios.DataBind();
        }
        [DirectMethod]
        public void limparCampo()
        {
            this.txtNomeUsuarios.Text = "";
            this.txtEmailUsuarios.Text = "";
            this.txtSenhaUsuarios.Text = "";
            this.txtConfirmaSenhaUsuarios.Text = "";
        }
    }
}